Kafka and RabbitMQ powered notification platform supporting Email, SMS and Push delivery with retry mechanisms, dead-letter queues and guaranteed message processing.
This project was designed to handle high-volume notifications across multiple delivery channels including Email, SMS and Push. The architecture combines Kafka for event streaming and RabbitMQ for reliable asynchronous task execution. The system includes retry mechanisms, dead-letter queues, channel-based routing and fault-tolerant message handling to ensure reliable notification delivery.
+----------------------+
| CLIENT APPLICATION |
+----------+-----------+
|
v
+----------------------+
| NOTIFICATION API |
| Spring Boot Service |
+----------+-----------+
|
v
+----------------------+
| KAFKA TOPIC |
| notification.events |
+----------+-----------+
|
+-------+-------+
| | |
v v v
EMAIL SMS PUSH
WORKER WORKER WORKER
| | |
+-------+-------+
|
v
+----------------------+
| RABBITMQ QUEUES |
+----------+-----------+
|
v
+----------------------+
| RETRY QUEUE |
+----------+-----------+
|
v
+----------------------+
| DEAD LETTER QUEUE |
+----------------------+
Supports Email, SMS and Push notifications through independent processing pipelines.
Notification requests are published as events, enabling asynchronous processing and scalability.
Dedicated workers consume messages reliably and process delivery tasks independently.
Failed deliveries are isolated into a DLQ for investigation and replay.
Initial delivery attempt immediately after queue consumption.
Failed messages are redirected to retry queues with configurable delay intervals.
Messages exceeding retry limits are moved into the Dead Letter Queue.
The Dead Letter Queue (DLQ) captures permanently failed notifications and prevents message loss.
Ensuring notifications are not lost during worker failures required acknowledgement handling, retries and queue durability.
Email, SMS and Push channels were isolated into dedicated processing flows to prevent cascading failures.
Kafka consumer groups enable horizontal scaling as notification volume increases.
DELIVERY CHANNELS
MESSAGE BROKERS
FAILURE RECOVERY
This project strengthened my understanding of event-driven architecture, asynchronous processing, distributed messaging systems, fault tolerance, retry strategies and scalable backend design. Building the system provided practical experience with Kafka event streaming, RabbitMQ task processing and designing resilient backend services using Spring Boot.